<?php
/**
 * Autor:   Miguel A. Zilli
 * Email:   miguelzilli@gmail.com
 */

class RevisionesController extends AppController{
    var $name='Revisiones';
    var $uses = array('Revision','Productor','Predio','Tecnico','Producto','Atributo',
        'Instalacionestipo','Atributosxinstalacion','Instalacion','Produccion','Actividadtipo',
        'Fertilizante','Fertilizacion','Aplicacionforma','Asesor','Rotacion',
        'Seguro','Asesoramiento'
    );
    var $helpers=array('Ajax','Javascript','DatePicker','Number');

    function ver($id=null){
        $revision=$this->Revision->find('first',array('conditions'=>'Revision.id='.$id));
        if ($revision){
            $this->set('revision',$revision);
            $this->set('producciones',$this->Produccion->find('all',array(
                        'conditions'=>'Produccion.revision_id='.$id,
                        'order'=>array('Producto.nombre_prod'=>'ASC','Producto.variedad_prod'=>'ASC','Predio.dom_pred'=>'ASC','Produccion.fch_prod'=>'DESC')
                    )));
            $this->set('rotaciones',$this->Rotacion->find('all',array(
                        'conditions'=>'Rotacion.revision_id='.$id
                    )));
            $inst_tmp=$this->Instalacion->find('all',array(
                    'conditions'=>'Instalacion.revision_id='.$id,
                    'order'=>'Instalacionestipo.desc_tipo_inst ASC'
                ));
            $instalaciones=null;
            foreach($inst_tmp as $tmp){
                $instalaciones[]=$tmp+$this->Atributosxinstalacion->find('all',array(
                        'conditions'=>'Atributosxinstalacion.instalacion_id='.$tmp['Instalacion']['id'],
                        'order'=>'Atributo.nombre_atr ASC'
                    ));
            }
            $this->set('instalaciones',$instalaciones);
            $this->set('fertilizaciones',$this->Fertilizacion->find('all',array(
                        'conditions'=>'Fertilizacion.revision_id='.$id,
                        'order'=>array('Predio.dom_pred'=>'ASC','Fertilizante.nombre_fert'=>'ASC','Fertilizacion.fch_fert'=>'DESC')
                    )));
            $this->set('asesoramientos',$this->Asesoramiento->find('all',array(
                        'conditions'=>'Asesoramiento.revision_id='.$id,
                        'order'=>array('Asesor.nombre_ases'=>'ASC','Asesoramiento.tipo_ases'=>'ASC')
                    )));
            $this->set('seguros',$this->Seguro->find('all',array(
                        'conditions'=>'Seguro.revision_id='.$id,
                        'order'=>array('Seguro.tipo_seg'=>'ASC','Seguro.fch_seg'=>'DESC')
                    )));
        }
    }

    function agregar($id_productor){
        if(!empty($this->data)){
            $this->data['Revision']['productor_id']=$id_productor;
            $this->data['Revision']['actividadtipo_id']=$this->ID_AGRICOLA;
            $this->data['Revision']['tipo_rev']='Anual';
            if($this->Revision->save($this->data)){
                $id_revision=$this->Revision->getID();

                //guardar producciones
                if (!empty($this->data['Produccion'])){
                    foreach($this->data['Produccion'] as $key=>$datos){
                        $this->data['Produccion'][$key]['revision_id']=$id_revision;
                        $this->data['Produccion'][$key]['productor_id']=$id_productor;
                        $this->Produccion->create($this->data['Produccion'][$key]);
                        if (($datos['fch_prod']!='')&&
                            ($this->Produccion->validates())){
                            $this->Produccion->save($this->data['Produccion'][$key]);
                        }
                    }
                }

                //guardar rotaciones
                $this->data['Rotacion']['revision_id']=$id_revision;
                if ($this->Rotacion->validates()){
                    $this->Rotacion->save($this->data);
                }

                //guardar instalaciones
                if (!empty($this->data['Instalacion'])){
                    foreach($this->data['Instalacion'] as $key=>$datos){
                        $this->data['Instalacion'][$key]['revision_id']=$id_revision;
                        $this->Instalacion->create($this->data['Instalacion'][$key]);
                        if (($datos['cant_inst']!='')&&
                            ($this->Instalacion->validates())){
                            if ($this->Instalacion->save($this->data['Instalacion'][$key])){
                                $id_instalacion=$this->Instalacion->getID();
                                //guardar atributos de esta instalacion
                                if(!empty($this->data[$key])){
                                    foreach($this->data[$key]['Atributosxinstalacion'] as $clave=>$valor){
                                        $this->data[$key]['Atributosxinstalacion'][$clave]['instalacion_id']=$id_instalacion;
                                        $this->Atributosxinstalacion->create($this->data[$key]['Atributosxinstalacion'][$clave]);
                                        $this->Atributosxinstalacion->save($this->data[$key]['Atributosxinstalacion'][$clave]);
                                    }
                                }
                            }
                        }
                    }
                }

                //guardar fertilizaciones
                if (!empty($this->data['Fertilizacion'])){
                    foreach($this->data['Fertilizacion'] as $key=>$datos){
                        $this->data['Fertilizacion'][$key]['revision_id']=$id_revision;
                        $this->Fertilizacion->create($this->data['Fertilizacion'][$key]);
                        if (($datos['kilos_fert']!='')&&
                            ($this->Fertilizacion->validates())){
                            $this->Fertilizacion->save($this->data['Fertilizacion'][$key]);
                        }
                    }
                }

                //guardar asesoramientos
                if (!empty($this->data['Asesoramiento'])){
                    foreach($this->data['Asesoramiento'] as $key=>$datos){
                        $this->data['Asesoramiento'][$key]['revision_id']=$id_revision;
                        $this->Asesoramiento->create($this->data['Asesoramiento'][$key]);
                        if ($this->Asesoramiento->validates()){
                            $this->Asesoramiento->save($this->data['Asesoramiento'][$key]);
                        }
                    }
                }

                //guardar seguros
                if (!empty($this->data['Seguro'])){
                    foreach($this->data['Seguro'] as $key=>$datos){
                        $this->data['Seguro'][$key]['revision_id']=$id_revision;
                        $this->Seguro->create($this->data['Seguro'][$key]);
                        if ($this->Seguro->validates()){
                            $this->Seguro->save($this->data['Seguro'][$key]);
                        }
                    }
                }
                $this->Session->setFlash('Operacion realizada correctamente.');
                $this->redirect('/productores/ver/'.$id_productor);
            }else{
                $this->Session->setFlash('Error: No se pudo realizar la operacion.');
            }
        }
        $this->set('productor',$this->Productor->find('first',array(
                    'conditions'=>'Productor.id='.$id_productor,
                    'recursive'=>'-1'
                )));
        $this->set('tecnicos',$this->Tecnico->find('superlist',array(
                    'fields'=>array('Tecnico.id','Tecnico.apellido_tec','Tecnico.nombre_tec'),
                    'order'=>array('Tecnico.apellido_tec'=>'ASC','Tecnico.nombre_tec'=>'ASC')
                )));
        $this->set('instalacionestipos',$this->Instalacionestipo->find('list',array(
                    'fields'=>'Instalacionestipo.desc_tipo_inst',
                    'order'=>'Instalacionestipo.desc_tipo_inst ASC',
                    'recursive'=>'-1'
                )));
        $tmprod=$this->Producto->find('list',array(
                    'fields'=>'Producto.nombre_prod',
                    'conditions'=>array('Producto.actividadtipo_id'=>$this->ID_AGRICOLA),
                    'order'=>array('Producto.nombre_prod'=>'ASC','Producto.variedad_prod'=>'ASC')));
        $this->set('productos',Set::combine($tmprod, '{n}.Producto.nombre_prod', '{n}.Producto.nombre_prod'));
        $anio=date('Y');
        for ($i=($anio); $i<=($anio); $i++){
            $j=$i+1;
            $campanias["{$i}-{$j}"]="{$i}-{$j}";
        }
        $this->set('campanias',$campanias);
        $this->Session->write('cont',0);
    }

    function editarcabecera($id){
        if(!empty($this->data)){
            if ($this->Revision->save($this->data['Revision'])){
                $this->Session->setFlash('Operacion realizada correctamente.');
                $this->redirect('/revisiones/ver/'.$id);
            }else{
                $this->Session->setFlash('Error: No se pudo realizar la operacion.');
            }
        }
        if(empty($this->data)){
            $this->data = $this->Revision->read(null,$id);
        }
        $this->set('tecnicos',$this->Tecnico->find('superlist',array(
                    'fields'=>array('Tecnico.id','Tecnico.apellido_tec','Tecnico.nombre_tec'),
                    'order'=>array('Tecnico.apellido_tec'=>'ASC','Tecnico.nombre_tec'=>'ASC')
                )));
        $anio=date('Y');
        for ($i=($anio); $i<=($anio); $i++){
            $j=$i+1;
            $campanias["{$i}-{$j}"]="{$i}-{$j}";
        }
        $this->set('campanias',$campanias);
    }

    function editarobservaciones($id){
        if(!empty($this->data)){
            if ($this->Revision->save($this->data)){
                $this->Session->setFlash('Operacion realizada correctamente.');
                $this->redirect('/revisiones/ver/'.$id);
            }else{
                $this->Session->setFlash('Error: No se pudo realizar la operacion.');
                $this->set('errores',$this->validate());
            }
        }
        if(empty($this->data)){
            $this->data = $this->Revision->read(null,$id);
        }
    }

    function eliminar($id=null){
        $this->__checkAdmin();
        $id_productor=$this->Revision->field('Revision.productor_id',array('Revision.id'=>$id));
        if ($this->Revision->del($id)){
            $this->Session->setFlash('Operacion realizada correctamente.');
            $this->redirect('/productores/ver/'.$id_productor);
        }else{
            $this->Session->setFlash('Error: No se pudo realizar la operacion.');
            $this->redirect('/productores/ver/'.$id_productor);
        }
    }

/*----------------------------------------
 * LLAMADAS AJAX
 * ---------------------------------------*/
    function add_produccion($id_productor){
        Configure::write("debug", 0);
        $x=$this->Session->read('cont')+1;
        $this->Session->write('cont',$x);
        $this->set("id", $x);
        $this->set('predios',$this->Productor->Predio->find('list',array(
                    'fields'=>'Predio.dom_pred',
                    'conditions'=>array('Predio.productor_id'=>$id_productor),
                    'order'=>'Predio.dom_pred ASC'
                )));
        $this->set('productos',$this->Producto->find('superlist',array(
                    'fields'=>array('Producto.id','Producto.nombre_prod','Producto.variedad_prod'),
                    'conditions'=>array('Producto.actividadtipo_id'=>$this->ID_AGRICOLA),
                    'order'=>array('Producto.nombre_prod'=>'ASC','Producto.variedad_prod'=>'ASC')
                )));
        $this->set('labranza',array('CONVENCIONAL'=>'CONVENCIONAL','S. DIRECTA'=>'S. DIRECTA','OTRA'=>'OTRA'));
        $this->set('propSemillas',array('PROPIA'=>'PROPIA','FISCALIZADA'=>'FISCALIZADA','OTRA'=>'OTRA'));
        $this->set('estadoCultivos',array('EMERGENTE'=>'EMERGENTE','FLORACION'=>'FLORACION','CREC. VEGET.'=>'CRECIMIENTO VEGETATIVO'));
        $this->set('surco',array('CONVENCIONAL'=>'CONVENCIONAL','ESTRECHO'=>'ESTRECHO','OTRO'=>'OTRO'));
        $this->render('/elements/add_produccion', 'ajax');
    }

    function add_instalacion($id_productor){
        Configure::write("debug",0);
        $x=$this->Session->read('cont')+1;
        $this->Session->write('cont',$x);
        $this->set("id", $x);
        $inst_tipo_id=$this->data['Selected']['instalaciontipo'];
        $this->set('instalacion',$this->Instalacionestipo->find('first',array('conditions'=>'Instalacionestipo.id='.$inst_tipo_id,'recursive'=>'-1')));
        $this->set('atributos',$this->Instalacionestipo->Atributo->find('all',array(
                    'conditions'=>'Atributo.instalacionestipo_id='.$inst_tipo_id,
                    'order'=>'Atributo.nombre_atr ASC',
                    'recursive'=>'-1')));
        $this->set('predios',$this->Productor->Predio->find('list',array(
                    'fields'=>'Predio.dom_pred',
                    'conditions'=>array('Predio.productor_id'=>$id_productor),
                    'order'=>'Predio.dom_pred ASC'
                )));
        $this->set('situaciones',array('PROPIA'=>'PROPIA','CONTRATADA'=>'CONTRATADA','OTRA'=>'OTRA'));
        $this->set('siNo',array('SI'=>'SI','NO'=>'NO','N/C'=>'N/C'));
        $this->render('/elements/add_instalacion', 'ajax');
    }

    function add_fertilizacion($id_productor){
        Configure::write("debug",0);
        $x=$this->Session->read('cont')+1;
        $this->Session->write('cont',$x);
        $this->set("id", $x);
        $this->set('predios',$this->Productor->Predio->find('list',array(
                    'fields'=>'Predio.dom_pred',
                    'conditions'=>array('Predio.productor_id'=>$id_productor),
                    'order'=>'Predio.dom_pred ASC'
                )));
        $this->set('fertilizantes',$this->Fertilizante->find('list'));
        $this->set('aplicacionformas',$this->Aplicacionforma->find('list'));
        $this->render('/elements/add_fertilizacion', 'ajax');
    }

    function add_asesoramiento(){
        Configure::write("debug",0);
        $x=$this->Session->read('cont')+1;
        $this->Session->write('cont',$x);
        $this->set("id", $x);
        $this->set('asesores',$this->Asesor->find('list'));
        $this->render('/elements/add_asesoramiento', 'ajax');
    }

    function add_seguro(){
        Configure::write("debug",0);
        $x=$this->Session->read('cont')+1;
        $this->Session->write('cont',$x);
        $this->set("id", $x);
        $this->set('segurosTipos',array('GRANIZO'=>'GRANIZO','MULTIRIESGO'=>'MULTIRIESGO','OTRO'=>'OTRO'));
        $this->render('/elements/add_seguro', 'ajax');
    }

//    function update_atr(){
//        $id_instipo=$this->data['Instalacion']['instalacionestipo_id'];
//        $atr=$this->Atributo->find('list',array(
//                    'fields'=>'Atributo.nombre_atr',
//                    'conditions'=>'Atributo.instalacionestipo_id='.$id_instipo,
//                    'order'=>'Atributo.nombre_atr ASC'));
//        $this->set('atributos', $atr);
//        $this->set('unidades', array(' kg'=>'kilos',' lit'=>'litros',' mts'=>'metros',' m&sup2;'=>' m&sup2;',' u'=>'unidades'));
//        $this->render('/elements/update_atr', 'ajax');
//    }
}
?>